// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
//

#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_

# define _CRT_SECURE_NO_DEPRECATE
# define _CRT_SECURE_NO_WARNINGS
# pragma warning(disable:4996)  // eugene@, what is this warning? comment please!

# if _MSC_VER > 1000
# pragma once
# endif // _MSC_VER > 1000

# define WIN32_LEAN_AND_MEAN    // Exclude rarely-used stuff from Windows headers
# define STRICT
//# define OEMRESOURCE

# define _WIN32_WINNT   0x0400
# define _WIN32_WINDOWS 0x0400
# define _WIN32_IE      0x0500 

# define STLP_NEW_PLATFORM_SDK  // Make STLport 5.1.4 be compatible with InterlockedIncrement() from latest PSDK.
# define __STL_NO_IOSTREAMS 1   // Exclude iostream support for STLPort (NOTE: this extremely diminishes EXE file size).

// Windows header files.
# include <Windows.h>
# include <Windowsx.h>
# include <CommCtrl.h>
# include <CommDlg.h>
# include <ShellApi.h>
# include <ShlObj.h>
# include <ShlWApi.h>
//# include <DbgHelp.h>
# include <PrSht.h>
# include <ShlwApi.h>
# include <Dlgs.h>
# include <WinInet.h>

// COM header files.
# include <ObjBase.h>
# include <OleCtl.h>

// C run-time library header files.
# include <stdlib.h>
# include <malloc.h>
# include <memory.h>
# include <tchar.h>
# include <stdio.h>
# include <math.h>
# include <new.h>
# include <assert.h>

// NOTE: _ASSERTE() is implemented more convenient for debugging in contrast to assert()
# include <CrtDbg.h>
# undef assert
# define assert _ASSERTE

// Suppress 'identifier is truncated to 255...' warning.
# pragma warning (disable : 4786)
// Suppress 'conversion ... possible loss of data' warning.
# pragma warning (disable : 4244)

# include <stdexcept>
# include <list>
# include <vector>
# include <map>
# include <set>
# include <utility>
# include <string>
# include <algorithm>

# include <AtlBase.h>

# if _MSC_VER < 7000 && ! defined (__SGI_STL_PORT)
	# pragma message ("WARNING!!! It is recommended to use STLPort (www.stlport.org) instead of MS STL!")
# endif // __SGI_STL_PORT

	//
	// The declaration below are intended to make the code compilable without Platform SDK.
	//
# ifndef _W64
	# define INT_PTR int
	# define UINT_PTR unsigned int
    typedef long LONG_PTR, *PLONG_PTR;
    typedef unsigned long ULONG_PTR, *PULONG_PTR;
# endif
# if !defined (BELOW_NORMAL_PRIORITY_CLASS) || !defined (ListView_SortItemsEx) || !defined (ListView_SetCheckState)
	# pragma message ("WARNING!!! Microsoft Platform SDK is required to compile this project!")

	# ifndef BELOW_NORMAL_PRIORITY_CLASS
		# define BELOW_NORMAL_PRIORITY_CLASS       0x00004000
	# endif // BELOW_NORMAL_PRIORITY_CLASS

	# ifndef IDC_HAND
		# define IDC_HAND            MAKEINTRESOURCE(32649)
	# endif // IDC_HAND

	# ifndef ListView_SetCheckState
		# define ListView_SetCheckState(hwndLV, i, fCheck) \
		        ListView_SetItemState(hwndLV, i, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), LVIS_STATEIMAGEMASK)
	# endif // ListView_SetCheckState

	# ifndef ListView_SortItemsEx
		# define LVM_SORTITEMSEX          (LVM_FIRST + 81)
		# define ListView_SortItemsEx(hwndLV, _pfnCompare, _lPrm) \
		        (BOOL)SNDMSG((hwndLV), LVM_SORTITEMSEX, (WPARAM)(LPARAM)(_lPrm), (LPARAM)(PFNLVCOMPARE)(_pfnCompare))
	# endif // ListView_SortItemsEx

	# ifndef GET_WHEEL_DELTA_WPARAM
		# define GET_WHEEL_DELTA_WPARAM(wParam)  ((short)HIWORD(wParam))
	# endif // GET_WHEEL_DELTA_WPARAM

	# ifndef MIIM_FTYPE
		# define MIIM_FTYPE 0x00000100
	# endif // MIIM_FTYPE

	# ifndef BIF_NEWDIALOGSTYLE
		# define BIF_NEWDIALOGSTYLE     0x0040
	# endif // BIF_NEWDIALOGSTYLE

	# ifndef BIF_UAHINT
		# define BIF_UAHINT             0x0100
	# endif // BIF_UAHINT
# endif // Platform SDK

# include "fstring.h"
typedef fstring string_t;

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
